{
copy = g_malloc (width * height * 4);
gdk_memory_convert (copy, width * 4,
- GDK_MEMORY_R8G8B8A8_PREMULTIPLIED,
+ GDK_MEMORY_CONVERT_GLES_RGBA,
data, stride, data_format,
width, height);
stride = width * 4;
{
copy = g_malloc (width * height * 4);
gdk_memory_convert (copy, width * 4,
- GDK_MEMORY_DEFAULT,
+ GDK_MEMORY_CONVERT_DOWNLOAD,
data, stride, data_format,
width, height);
stride = width * 4;
GdkMemoryTexture *self = GDK_MEMORY_TEXTURE (texture);
gdk_memory_convert (data, stride,
- GDK_MEMORY_CAIRO_FORMAT_ARGB32,
+ GDK_MEMORY_CONVERT_DOWNLOAD,
(guchar *) g_bytes_get_data (self->bytes, NULL),
self->stride,
self->format,
gsize width,
gsize height);
-static ConversionFunc converters[GDK_MEMORY_N_FORMATS][3] =
+static ConversionFunc converters[GDK_MEMORY_N_FORMATS][GDK_MEMORY_N_CONVERSIONS] =
{
{ convert_memcpy, convert_swizzle3210, convert_swizzle2103 },
{ convert_swizzle3210, convert_memcpy, convert_swizzle3012 },
};
void
-gdk_memory_convert (guchar *dest_data,
- gsize dest_stride,
- GdkMemoryFormat dest_format,
- const guchar *src_data,
- gsize src_stride,
- GdkMemoryFormat src_format,
- gsize width,
- gsize height)
+gdk_memory_convert (guchar *dest_data,
+ gsize dest_stride,
+ GdkMemoryConversion dest_format,
+ const guchar *src_data,
+ gsize src_stride,
+ GdkMemoryFormat src_format,
+ gsize width,
+ gsize height)
{
g_assert (dest_format < 3);
g_assert (src_format < GDK_MEMORY_N_FORMATS);
#define GDK_MEMORY_GDK_PIXBUF_OPAQUE GDK_MEMORY_R8G8B8
#define GDK_MEMORY_GDK_PIXBUF_ALPHA GDK_MEMORY_R8G8B8A8
-#define GDK_MEMORY_CAIRO_FORMAT_ARGB32 GDK_MEMORY_DEFAULT
+typedef enum {
+ GDK_MEMORY_CONVERT_DOWNLOAD_LITTLE_ENDIAN,
+ GDK_MEMORY_CONVERT_DOWNLOAD_BIT_ENDIAN,
+ GDK_MEMORY_CONVERT_GLES_RGBA,
+
+ GDK_MEMORY_N_CONVERSIONS
+} GdkMemoryConversion;
+
+#if G_BYTE_ORDER == G_LITTLE_ENDIAN
+#define GDK_MEMORY_CONVERT_DOWNLOAD GDK_MEMORY_CONVERT_DOWNLOAD_LITTLE_ENDIAN
+#elif G_BYTE_ORDER == G_BIG_ENDIAN
+#define GDK_MEMORY_CONVERT_DOWNLOAD GDK_MEMORY_CONVERT_DOWNLOAD_BIG_ENDIAN
+#else
+#error "Unknown byte order for GDK_MEMORY_CONVERT_DOWNLOAD"
+#endif
gsize gdk_memory_format_bytes_per_pixel (GdkMemoryFormat format);
const guchar * gdk_memory_texture_get_data (GdkMemoryTexture *self);
gsize gdk_memory_texture_get_stride (GdkMemoryTexture *self);
-void gdk_memory_convert (guchar *dest_data,
- gsize dest_stride,
- GdkMemoryFormat dest_format,
- const guchar *src_data,
- gsize src_stride,
- GdkMemoryFormat src_format,
- gsize width,
- gsize height);
+void gdk_memory_convert (guchar *dest_data,
+ gsize dest_stride,
+ GdkMemoryConversion dest_format,
+ const guchar *src_data,
+ gsize src_stride,
+ GdkMemoryFormat src_format,
+ gsize width,
+ gsize height);
G_END_DECLS
texture = gdk_memory_texture_new (cairo_image_surface_get_width (surface),
cairo_image_surface_get_height (surface),
- GDK_MEMORY_CAIRO_FORMAT_ARGB32,
+ GDK_MEMORY_DEFAULT,
bytes,
cairo_image_surface_get_stride (surface));
pixel_data = free_data = g_malloc (width * height * 4);
gdk_memory_convert (pixel_data,
width * 4,
- GDK_MEMORY_R8G8B8A8_PREMULTIPLIED,
+ GDK_MEMORY_CONVERT_GLES_RGBA,
cairo_image_surface_get_data (surface),
width * 4,
GDK_MEMORY_DEFAULT,
{
pixel_data = free_data = g_malloc (width * height * 4);
gdk_memory_convert (pixel_data, width * 4,
- GDK_MEMORY_R8G8B8A8_PREMULTIPLIED,
+ GDK_MEMORY_CONVERT_GLES_RGBA,
surface_data, cairo_image_surface_get_stride (surface),
GDK_MEMORY_DEFAULT, width, height);
gl_format = GL_RGBA;